home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / PowerPC / Tools / PPCLibEmu / history.txt < prev    next >
Encoding:
Text File  |  2000-05-31  |  14.9 KB  |  296 lines

  1. ppc.library emulation history
  2. =============================
  3.  
  4. (kern): changes are relevant for PowerUp kernel emulation only
  5. (lib): changes are relevant for M68k library only
  6.  
  7.  
  8. - 0.7e / ppc.library 46.26 (25.05.2000)
  9. o (lib) Fixed elfloadseg ioerror bug: if LoadSeg was attempted for
  10.   non-existing file it returned ioerr ERROR_OBJECT_WRONG_TYPE, which was
  11.   definetely wrong. Now return ERROR_OBJECT_NOT_FOUND as supposed to.
  12. o (lib) Fixed a bug from elfloadseg, initialization called FindSemaphore()
  13.   without list arbitration.
  14. o (lib) Improved elfloadseg not to open ppc.library each time LoadSeg
  15.   is called or ppcsegment is launched. Uses cached ppcbase instead.
  16. o (lib) Fixed a bug from elfloadseg patch that could have broken AmigaOS
  17.   overlay system (it was pure luck it had worked till now).
  18. o (lib) Fixed a bug from elfloadseg patch: if the library would have got
  19.   unloaded (flushed from memory) before the segment was run, the program
  20.   would have crashed miserably.
  21.  
  22. - 0.7d / ppc.library 46.25 (22.02.2000)
  23. o Now PPCINFOTAG_CPUPLL should finally be correct. I'm no longer
  24.   calculating anything but I'm just taking the PLL code from HID1,
  25.   like original PowerUp does (thanks to Harry Sintonen for pointing
  26.   this out). The PLL code bug in the GetAttr() kernel function is
  27.   also emulated.
  28.  
  29. - 0.7c / ppc.library 46.24 (11.01.2000)
  30. o (lib) Ok, mea culpa. There *are* PPC boards with LC040 out, so I can't
  31.   use the FPU on the M68k side. Fixed GetAttrs()/PPCINFOTAG_CPUPLL again.
  32. o (lib) PPCGetAttrs() will always return a result, not only when
  33.   ti_Data is 0.
  34.  
  35. - 0.7b / ppc.library 46.23 (07.01.2000)
  36. o PPCAttrs()/PPCGetAttr() PPCINFOTAG_CPUPLL returns the correct pll code
  37.   now and now longer the calculated pll * 1000000 directly.
  38. o Fixed crash when starting ELF objects from Workbench.
  39. o Library needs a working M68k FPU now (no EC040/EC060).
  40.  
  41. - 0.7a / ppc.library 46.22 (13.12.1999)
  42. o Problems with launching asynchronous PPC threads from an asynchronous
  43.   PPC task solved (AmigaAmp).
  44. o Fixed PPCFindTask(), which crashed when a task was not found (Frogger,
  45.   no audio)!
  46.  
  47. - 0.7 / ppc.library 46.21 (12.12.1999)
  48. o Source is included in release. Make all years 4-digit.
  49. o Asynchronous PPC tasks always had an invalid current directory and
  50.   PROGDIR. This was the main reason that for example MAME (and hope-
  51.   fully many others) didn't work. Now the parent PROGDIR will be
  52.   passed to the asynchronous task.
  53. o (kern) PPCAllocVec/AllocMem() return 32-byte aligned memory again.
  54.   Since V15 the AllocVecPPC function from WarpOS does only guarantee
  55.   8-byte alignment, because memory is always from a pool, so there
  56.   are no cache line problems - but maybe PowerUp software could get
  57.   annoyed by this fact.
  58.  
  59. - 0.6g / ppc.library 46.20 (06.12.1999)
  60. o (kern) PPCLoadObject(), PPCLoadObjectTagList(), PPCUnLoadObject() and
  61.   PPCCreateTask() are supported. Generally they will only call the
  62.   appropriate M68k function, but the kernel version of PPCCreateTask()
  63.   has an additional PC argument, which allows to spawn threads from the
  64.   current task.
  65. o (kern) PPCprintf() with some limitations. No float or long long
  66.   support. Strings are limited to 1000 chars.
  67.  
  68. - 0.6f / ppc.library 46.19 (16.05.1999)
  69. o (kern) PPCAllocPooled() calls PPCAllocVecPooled() and PPCFreePooled()
  70.   call PPCFreeVecPooled(), which saves some space.
  71.  
  72. - 0.6e / ppc.library 46.18 (14.05.1999)
  73. o (kern) PowerUp task priority is converted into a WarpOS nice-value,
  74.   by using the simple formula: NICE = -PRI (not nice, but it works ;)
  75. o (kern) PPCSetTaskAttr() PPCTASKINFOTAG_NAME is illegal.
  76. o (lib) New function PPCSetTaskAttrs(). Supported tags:
  77.   PPCTASKINFOTAG_PRIORITY, PPCTASKTAG_EXTUSERDATA, PPCTASKINFOTAG_INPUTHANDLE,
  78.   PPCTASKINFOTAG_OUTPUTHANDLE and PPCTASKINFOTAG_ERRORHANDLE.
  79.  
  80. - 0.6d / ppc.library 46.17 (13.05.1999)
  81. o MEMF_NOCACHEPPC,MEMF_NOCACHEM68K,MEMF_WRITETHROUGHPPC and
  82.   MEMF_WRITETHROUGHM68K are supported for PPCAllocVec(), PPCAllocMem()
  83.   and PPCCreatePool() (M68k and PPC). Ok... not really supported, but
  84.   emulated by using Chip-RAM. :)
  85. o PPCGetAttrs(M68k) and PPCGetAttr(PPC) return 0x57415250 ('WARP') for
  86.   PPCINFOTAG_EMULATION (=0x8001f0ff), which allows a program to distinguish
  87.   the emulation library from the original.
  88. o (lib) PPCCreateTask(): Don't allocate new memory for a second PPC task
  89.   invocation with the same ELF object. Only PROGBITS sections are reloaded
  90.   from disk to ensure data consistency. NOBITS sections are simply cleared.
  91. o (lib) ELF sections are already loaded and relocated on PPCLoadObject().
  92.   This guarantees that PPCGetObjectAttrs() works as expected before
  93.   PPCCreateTask() was called.
  94. o (lib) PPCRead/Write/Byte/Word/Long() flush the data cache on PPC side.
  95.   PPCWriteLongFlush() additionally invalidates the PPC instruction cache.
  96. o (lib) Fix for SAS/C HunkObj-format, which uses the illegal version 0
  97.   in e_ident[EI_VERSION].
  98. o (kern) New functions: PPCReadByte,PPCReadWord,PPCReadLong,PPCWriteByte,
  99.   PPCWriteWord and PPCWriteLong.
  100.  
  101. - 0.6c / ppc.library 46.16 (23.04.1999)
  102. o (lib) Enforcer hit fixed, when library is opened by a program for the
  103.   first time.
  104.  
  105. - 0.6b / ppc.library 46.15 (18.04.1999)
  106. o (lib) Alloc/Free functions call the appropriate PPC-functions now,
  107.   by doing a context-switch. This ensures that the memory functions
  108.   on the PPC- and on the 68k-side behave exactly the same.
  109. o (lib) Support for pooled memory: PPCAllocPooled(),PPCFreePooled(),
  110.   PPCAllocVecPooled(),PPCFreeVecPooled(),PPCCreatePool(),PPCDeletePool().
  111.  
  112. - 0.6a / ppc.library 46.14 (14.04.1999)
  113. o (kern) PPCFindTask() returns PowerUp TaskObject instead WarpOS TaskPPC.
  114. o (kern) PPCSignal() expects PowerUp TaskObject instead WarpOS TaskPPC.
  115.  
  116. - 0.6 / ppc.library 46.13 (11.04.1999)
  117. o This version of the emulation library REQUIRES powerpc.library V15!
  118. o (lib) MPSemaphore protection of library base caused a wrong Lib-OpenCnt,
  119.   which had the effect that the 0.5d library could never be expunged.
  120. o (kern) The optional PPC MsgPort was not deleted on task exit.
  121. o (kern) Pooled memory, as introduced by WarpOS V4, is supported. The
  122.   dummy functions are replaced by real ones: PPCAllocPooled(),
  123.   PPCAllocVecPooled(),PPCCreatePool(), PPCDeletePool(),PPCFreePooled(),
  124.   PPCFreeVecPooled().
  125. o (kern) PPCFindName(), PPCFindNameSync().
  126. o (kern) Semaphore functions: PPCAttemptSemaphore, PPCAttemptSemaphoreByName,
  127.   PPCAttemptSemaphoreShared, PPCCreateSemaphore, PPCDeleteSemaphore,
  128.   PPCObtainSemaphore, PPCObtainSemaphoreByName, PPCObtainSemaphoreShared,
  129.   PPCReleaseSemaphore.
  130. o (kern) Cache support: PPCCacheFlush, PPCCacheFlushAll, PPCCacheInvalid.
  131. o (kern) PPCRawDoFmt().
  132.  
  133. - 0.5d / ppc.library 46.12 (10.04.1999)
  134. o The first try of the PowerUp Message System Emulation seems to be working!
  135.   Currently all messages and message ports are allocated in Chip-RAM and
  136.   the performance is some magnitudes behind the original ppc.library,
  137.   but it ran successfully through all tests (e.g. msg2, msg2old, msg3,
  138.   msg5 and msg7 by Ralph Schmidt - the other two have bugs).
  139.   The code is already prepared to run in Fast-RAM, which I might try
  140.   in a future release.
  141. o (kern) PowerUp Message System supported functions:
  142.   PPCCreatePort(), PPCDeletePort(), PPCObtainPort(), PPCReleasePort(),
  143.   PPCWaitPort(), PPCCreateMessage(), PPCDeleteMessage(), PPCGetMessage(),
  144.   PPCGetMessageAttr(), PPCReplyMessage(), PPCSendMessage().
  145. o (lib) PowerUp Message System supported functions:
  146.   PPCCreatePort(), PPCDeletePort(), PPCObtainPort(), PPCReleasePort(),
  147.   PPCWaitPort(), PPCCreateMessage(), PPCDeleteMessage(), PPCGetMessage(),
  148.   PPCGetMessageAttr(), PPCReplyMessage(), PPCSendMessage().
  149. o (lib) PPCCreateTask():
  150.   PPCTASKTAG_INPUT/OUTPUT/ERRORHANDLE overrule NP_xxx tags. It was the
  151.   other way around before.
  152.   New PPCCreateTask() tags: PPCTASKTAG_STACKSIZE, STARTUP_MSG,
  153.   STARTUP_MSGDATA, STARTUP_MSGLENGTH, STARTUP_MSGID, MSGPORT.
  154. o (lib) PPCCreateTask() supports asynchronous PPC tasks.
  155. o (lib) PPCDeleteTask() - untested.
  156. o (lib) PPCGetTaskAttrs(). New tags: PPCTASKINFOTAG_TASK, VALUEPTR,
  157.   NAME, PRIORITY, STACKSIZE, INPUTHANDLE, OUTPUTHANDLE, ERRORHANDLE,
  158.   ELFOBJECT, STARTUP_MSG, STARTUP_MSGDATA, STARTUPMSG_LENGTH,
  159.   STARTUP_MSGID, STARTUP_MSGPORT, SIGALLOC, SIGWAIT, SIGRECVD,
  160.   WAITFINISHTASK. The hook and PPC-registers are not supported. Most
  161.   tags are untested.
  162. o (kern) Startup code for PPC tasks creates a PPCMsgPort on demand (tag
  163.   PPCTASKTAG_MSGPORT). Cleanup code replies the startup message (tag
  164.   PPCTASKTAG_STARTUP_MSG).
  165. o (kern) PPCGetTaskAttr(). New tags supported: PPCTASKTAG_STARTUP_MSG,
  166.   PPCTASKTAG_STARTUP_MSGDATA, PPCTASKTAG_STARTUP_MSGLENGTH,
  167.   PPCTASKTAG_STARTUP_MSGID and PPCTASKTAG_MSGPORT.
  168. o (lib) PPCCacheInvalidE() and PPCCacheTrashE(). Fixed some bugs from
  169.   the original ppc.library in these functions.
  170. o (lib) When debugging mode for the library is enabled, the names of
  171.   still unimplemented 68k-functions will be displayed.
  172.  
  173. - 0.5c / ppc.library 46.11 (20.03.1999)
  174. o Removed PPCAlert(), PPCPutMessage() and PSYSCALL_xxx(), which are
  175.   not accessible in the original kernel.
  176.  
  177. - 0.5b / ppc.library 46.10 (18.02.1999)
  178. o There has to be one EXTUSERDATA for every task. Programs using
  179.   ixemul.elf still don't work.
  180. o Increased default stack size used by LoadSeg-patch from 16k to 64k.
  181.  
  182. - 0.5a / ppc.library 46.9 (26.01.1999)
  183. o The EXTUSERDATA tag is supported. ixemul.elf based programs have a
  184.   chance to work now.
  185. o (kern) PPCGetTaskAttr() got new tags: PPCTASKINFOTAG_NAME,
  186.   PPCTASKINFOTAG_PRIORITY, PPCTASKTAG_STACKSIZE, PPCTASKTAG_EXTUSERDATA,
  187.   PPCTASKINFOTAG_USEDSTACKSIZE, PPCTASKINFOTAG_INPUTHANDLE,
  188.   PPCTASKINFOTAG_OUTPUTHANDLE, PPCTASKINFOTAG_ERRORHANDLE and
  189.   PPCTASKINFOTAG_ELFOBJECT.
  190. o (kern) New function PPCSetTaskAttr(). Supported tags: PPCTASKINFOTAG_NAME,
  191.   PPCTASKINFOTAG_PRIORITY, PPCTASKTAG_EXTUSERDATA,
  192.   PPCTASKINFOTAG_INPUTHANDLE, PPCTASKINFOTAG_OUTPUTHANDLE,
  193.   PPCTASKINFOTAG_ERRORHANDLE.
  194.  
  195. - 0.5 / ppc.library 46.8 (24.01.1999)
  196. o Possibility to start ELF objects directly under WarpOS without runelf!
  197.   The emulation library installs its own ELF-LoadSeg patch, which works
  198.   nearly in the same way as with the original library. Only difference:
  199.   The message system is not used. This feature was only for vbcc-
  200.   compatibily anyway, and I know for sure that vbcc no longer needs it. :)
  201. o (lib) PPCCacheClearE() is supported, because it's used by the LoadSeg-
  202.   patch, for example.
  203.  
  204. - 0.4c / ppc.library 46.7 (23.01.1999)
  205. o (kern) Fixed PPCGetAttr(). It was erroneously implemented as
  206.   PPCGetAttrs() in 0.4 and had some bugs anyway. Now PLL is much more
  207.   precise than with the original.
  208. o (kern) Task support functions: PPCFindTask(), PPCFinishTask() and
  209.   PPCGetTaskAttr(). PPCGetTaskAttr currently only knows about the
  210.   PPCTASKTAG_STACKSIZE tag, others will generate a NULL return value.
  211. o Common symbols are no longer ignored. Space in the .bss section will
  212.   be assigned for them. This was one of the major reasons for most
  213.   crashes under earlier versions! Unlike vbcc and SAS/C, gcc (or egcs?)
  214.   uses common symbols (since some time?).
  215. o (kern) PowerUp ELF library support:
  216.   PPCOpenLibrary(), PPCCloseLibrary(), PPCGetLibSymbol().
  217. o New method of starting PPC tasks. Still synchronous only, but the
  218.   function is already prepared for asynchronous tasks.
  219. o (lib) More tags supported by PPCCreateTask(): PPCTASKTAG_ERROR,
  220.   PPCTASKTAG_BREAKSIGNAL,PPCTASKTAG_INPUTHANDLE,PPCTASKTAG_OUTPUTHANDLE,
  221.   PPCTASKTAG_ERRRORHANDLE,PPCTASKTAG_NAME,PPCTASKTAG_PRIORITY,
  222.   PPCTASKTAG_ARG5-ARG8, NP_Input,NP_Output,NP_Error,NP_CloseInput,
  223.   NP_CloseOutput,NP_CloseError.
  224. o (lib) The argument pointer of PPCRunObject() was not recognized!
  225. o (lib) All memory allocations are done with 32-byte alignment now. There
  226.   were some dangeours 4-byte aligments left in earlier versions.
  227.  
  228. - 0.4b / ppc.library 46.6 (05.01.1999)
  229. o A separate PowerPC task ("ppcemu TimerObjSrv") is launched when the
  230.   library is initialized. It will be needed to handle the timer jobs
  231.   and to do PPC task notification. It uses zero cpu-time, when idling.
  232. o (kern) TimerObjects: PPCCreateTimerObject, PPCDeleteTimerObject,
  233.   PPCGetTimerObject, PPCSetTimerObject.
  234. o (kern) I/O: PPCInput,PPCOutput.
  235. o (kern) Signal support: PPCAllocSignal,PPCFreeSignal,PPCSetSignal,
  236.   PPCSignal,PPCWait (PPCSignal might not work, because of different Task
  237.   definitions).
  238. o (kern) Version: PPCVersion,PPCRevision.
  239. o (kern) TagItem support: PPCFindTagItem,PPCGetTagData,PPCNextTagItem.
  240. o (kern) Fixed Add64,Add64p,Sub64,Sub64p (they are still incorrect
  241.   in original ppc.libraray!)
  242. o (kern) Improved Cmp64,Cmp64p.
  243.  
  244. - 0.4a / ppc.library 46.5 (19.12.1998)
  245. o (kern) Fixed PPCNeg64,Neg64p,Sub64,Sub64p,Mulu64,Mulu64p,Muls64,Muls64p.
  246. o (lib) Private PPCDebugMode function.
  247.  
  248. - 0.4 / ppc.library 46.4 (27.11.1998)
  249. o Included the *names* of all kernel functions from ppc.library V46.19.
  250.   As a consequence the library version was bumped to 46.
  251. o The PowerPC type, cpu clock and bus clock will be determined when
  252.   initializing the library base.
  253. o PPCGetAttr (without PPCINFOTAG_EXCEPTIONHOOK) for M68k lib and PPC kernel.
  254. o (lib) PPCCreateTask: r3 and r4 default to zero to avoid startup
  255.   code crashes when checking for args via r3 (PPCLoad-fix).
  256. o (lib) Read/write data by PowerPC: PPCReadByte,WriteByte,ReadWord,
  257.   WriteWord,ReadLong,WriteLong,WriteLongFlush.
  258. o (kern) The kernel functions no longer need to init the TOC pointer.
  259. o (kern) Included additional 64-bit and gcc-support functions of V46.19:
  260.   PPCAnd64,Asl64,Lsl64,Asr64,Lsr64,Or64,Xor64,DivRem64,
  261.   __adddi3,__anddi3,__ashldi3,__ashrdi3,__cmpdi2,__divdi3,__fixdfdi,
  262.   __fixsfdi,__fixunsdfdi,__fixunssfdi,__floatdidf,__floatdisf,
  263.   __floatunsdidf,__iordi3,__lmulq,__lshldi3,__lshrdi3,__moddi3,
  264.   __muldi3,__negdi2,__qdivrem,__subdi3,__ucmpdi2,__udivdi3,
  265.   __umoddi3,__xordi3, memcpy,strcmp,strcpy
  266.  
  267. - 0.3 / ppc.library 45.3 (20.11.1998)
  268. o (kern) List functions: PPCAddHead/Sync, AddTail/Sync, Enqueue/Sync,
  269.   Insert/Sync, NewList, RemHead/Sync, Remove/Sync, RemTail/Sync
  270.   and PPCNextTagItem.
  271.  
  272. - 0.2 / ppc.library 45.2 (16.11.1998)
  273. o (kern) 64-bit support functions: PPCAdd64, Add64p, Cmp64, Cmp64p,
  274.   Divs64, Divs64p, Divu64, Divu64p, Mods64, Mods64p, Modu64, Modu64p,
  275.   Muls64, Muls64p, Mulu64, Mulu64p, Neg64, Neg64p, Sub64, Sub64p
  276.  
  277. - 0.1 / ppc.library 45.1 (15.11.1998)
  278. o First partially working ppc.library emulation. Synchronous PPC
  279.   tasks, started by runelf, which only use the basic PowerUp kernel
  280.   functions for I/O, memory and context-switch seem to work fine.
  281. o (lib) Supported 68k functions:
  282.   PPCLoadObject,PPCUnloadObject,PPCRunObject,PPCAllocMem,PPCFreeMem,
  283.   PPCAllocVec,PPCFreeVec,PPCCreateTask(only synchronous),
  284.   PPCGetObjectAttrs,PPCLoadObjectTagList
  285. o (kern) Supported PowerUp kernel functions:
  286.   PPCAllocMem,PPCAllocPooled(dummy),PPCAllocVec,
  287.   PPCAllocVecPooled(dummy),PPCCallM68k,PPCCallOS,PPCClose,
  288.   PPCCreatePool(dummy),PPCDeletePool(dummy),PPCFreeMem,
  289.   PPCFreePooled(dummy),PPCFreeVec,PPCFreeVecPooled(dummy),
  290.   PPCOpen,PPCRead,PPCSeek,PPCWrite.
  291.   Pooled memory functions currently use the normal Alloc/FreeVec
  292.   functions, because pooled memory support is still missing in WarpOS.
  293.  
  294. - 0.0 / ppc.library 45.0 (31.10.1998)
  295. o Started after getting a hint that the last author abondoned his project.
  296.